#include "Thread.hpp"

#include <unistd.h>
#include <time.h>
#include <stdlib.h>

#include <iostream>
#include <memory>

using std::cout;
using std::endl;
using std::unique_ptr;

class MyThread
: public wd::Thread
{

    void run() override
    {
        //设置一个随机数的种子
        srand(time(nullptr));
        int cnt = 10;
        while(cnt-- > 0) {
            //获取一个100以内的随机数
            int number = rand() % 100;
            cout << "produce a number: " << number << endl;
            sleep(1);
        }
    }
};

void test()
{
    //线程是一种系统资源，不能进行复制或者赋值(不能进行复制控制操作)
    //所谓的复制控制就是要调用拷贝构造函数和赋值运算符函数, 表达的是值语义(值传递)
    MyThread t1;
    //MyThread t2 = t1;//该语句应该执行吗？ 不能执行，要表达对象语义(禁止复制)
}

int main()
{
    unique_ptr<wd::Thread>  thread(new MyThread);
    thread->start();
    thread->join();
    //cout << "main thread is exiting" << endl;
    printf("main thread is exiting\n");//效率更高
    return 0;
}

